package org.shj.pattern.mediator

/**
 * 中介者模式： 用一个中介对象来封装一系列对象的交互。中介者使各对象之间不需要显式地相互引用，从而使其耦合松散，而且可以独立地改变它们之间的交互。
 * 何时使用： 多个类相互耦合，形成了网状结构。 一般应用于一组对象以定义良好但是复杂的方式进行通信的场合，以及想定制一个分布在多个类中的行为，
 *     而又不想生成太多的子类的场合。
 * 缺点： 把对象之间的耦合的复杂性移到了，中介者中。
 * @author huangjian
 *
 */
object MediatorMain {
  def main(args: Array[String]): Unit = {
    val union = new Union()
    
    val iraq = new Iraq(union, "Iraq")
    val usa = new USA(union,"USA")
    
    union.addColleague(iraq)
    union.addColleague(usa)
    
    usa.declare("你有核武器")
    iraq.declare("我们没有")
  }
}